package cn.lhl.config;

import cn.org.atool.fluent.mybatis.spring.MapperFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;


@Configuration
@MapperScan(basePackages = {"cn.lhl.fm.**.mapper"})
/*
1. @MapperScan 必需引用 mybatis-spring-boot-starter, 否则不能扫描生效。
	可以用 mybatis-plus 的 mybatis-plus-boot-starter 替代
2. @MapperScan的 basePackages定义的所有包下的所有接口生成一个org.apache.ibatis.binding.MapperProxy代理bean，
这样就可以用@Autowired注解进行装配使用了
缺点:MapperScan用来扫描定义包下的所有的接口，无论这个接口你的设计目的是用来干嘛的，他都会生成一个bean
所以:包名不能太大 ,包名要精确
3.basePackages可以配合 annotationClass 扫描器将在基本包中注册所有具有指定注解的接口 这样包名就可以大一些
	没有@Mapper的接口就不会加进来
	basePackages 通配符
	?:匹配一个字符。
	*:匹配0到多个字符，如果用于路径匹配，只匹配一级目录。
	**:一般用于路径匹配，匹配多级目录
*/

public class MybatisConfig_lhl {

	/**
	 * 定义mybatis的SqlSessionFactoryBean  在有springjdbc的前提下 这一直接这样用
	 *
	 * @param dataSource
	 * @return
	 */
	@Bean
	public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {
		SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
		bean.setDataSource(dataSource);
		return bean;
	}

	@Bean
	public MapperFactory mapperFactory() {
		return new MapperFactory();
	}

}
